package main

import "fmt"

func main() {
	//make去创建切片 func make(t Type, size ...IntegerType) Type
	//Type是类型，比如我现在是[]bool
	//size是长度
	//IntegerType是容量
	//容量必须大于等于长度
	//如果没写容量，那就容量和长度一样

	//s1=[false false false false false false false false false false] len(s1)=10 cap(s1)=10
	bools := make([]bool, 10, 11)
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", bools, len(bools), cap(bools))

	//s1=[] len(s1)=0 cap(s1)=10
	ints := make([]int, 0, 10)
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", ints, len(ints), cap(ints))

	// 切片的赋值是对象传递，所以是指向同一个底层数组
	s1 := []int{1, 3, 5}
	s2 := s1 // s3和s4都指向了同一个底层数组
	fmt.Println(s1, s2)
	s2[1] = 1000
	fmt.Println(s1, s2)

	for i := 0; i < len(s2); i++ {
		fmt.Println(s2[i])
	}

	for i, v := range s2 {
		fmt.Println(i, v)
	}
}
